package com.softer.chengxin.project.controller;

import com.softer.chengxin.common.domin.Common;
import com.softer.chengxin.common.domin.CommonResult;
import com.softer.chengxin.common.domin.ManagerPageResult;
import com.softer.chengxin.common.domin.Page;
import com.softer.chengxin.common.enums.ResultEnum;
import com.softer.chengxin.corp.domin.ApproveDTO;
import com.softer.chengxin.project.domin.ProjectInfo;
import com.softer.chengxin.project.service.ProManagerService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

/**
 * @author wangxinrui
 * @date 2018/10/12
 */
@RestController
@RequestMapping(value = "/api/ZG_ProjectBaseInfo")
public class ProManagerController {

    @Autowired
    private ProManagerService proms;

    /**
     * 项目信息查询列表
     * @param page        页码
     * @param session     session
     * @param qyName      企业名
     * @param projectName 项目名
     * @param district    所在区县
     * @param street      所在街道
     * @param cxDateBegin 查询开始时间
     * @param cxDateEnd   查询结束时间
     * @param state       状态
     * @return 结果
     */
    @PostMapping(value = "/load")
    public ManagerPageResult getProCXList(Page page, HttpSession session, String qyName, String street, String district,
                                  String cxDateBegin, String cxDateEnd, String state, String projectName) throws Exception {
        String loginName = (String) session.getAttribute(Common.LOGIN_NAME);
        if (StringUtils.isBlank(loginName)) {
            return new ManagerPageResult();
        }
        return proms.load(loginName, qyName, projectName, state, page, district, street, cxDateBegin, cxDateEnd);
    }
    /**
     * 项目信息审批列表
     * @param page        页码
     * @param session     session
     * @param qyName      企业名
     * @param projectName 项目名
     * @param district    所在区县
     * @param street      所在街道
     * @param cxDateBegin 查询开始时间
     * @param cxDateEnd   查询结束时间
     * @param state       状态
     * @return 结果
     */
    @PostMapping(value = "/getProSPList")
    public ManagerPageResult getProSPList(Page page, HttpSession session, String qyName, String street, String district,
                                  String cxDateBegin, String cxDateEnd, String state, String projectName){
        String loginName = (String) session.getAttribute(Common.LOGIN_NAME);
        if (StringUtils.isBlank(loginName)) {
            return new ManagerPageResult();
        }
        return proms.getProSPList(loginName, qyName, projectName, state, page, district, street, cxDateBegin, cxDateEnd);
    }

    /**
     * 加载该管理账号所管理区域的企业下 需要审批 的项目信息
     *
     * @param page    页码
     * @param qyName  企业名
     * @param state   状态
     * @param session session
     * @return 结果
     */
    @PostMapping(value = "/xmsp")
    public ManagerPageResult load(Page page, String qyName, String proName, Integer state, HttpSession session) {
        String loginName = (String) session.getAttribute(Common.LOGIN_NAME);
        if (StringUtils.isBlank(loginName)) {
            return new ManagerPageResult();
        }
        return proms.findByCondition(loginName, qyName, state, page, proName);
    }

    /**
     * 项目审批
     *
     * @param session    session
     * @param approveDTO 实体信息
     * @param session    session
     * @return 结果
     */
    @PostMapping("/sp")
    public CommonResult sp(ApproveDTO approveDTO, HttpSession session) {
        String loginName = (String) session.getAttribute(Common.LOGIN_NAME);
        if (StringUtils.isBlank(loginName)) {
            return new CommonResult(ResultEnum.FAIL.getCode(), Common.PLEASE_LOG_IN);
        }
        return proms.sp(loginName, approveDTO);
    }

    /**
     * 获取该项目下的人员信息
     *
     * @param page  页码
     * @param name  人员姓名
     * @param depId 部门id
     * @return 结果
     */
    @PostMapping(value = "/getProjectPerson")
    public ManagerPageResult getProjectPerson(Page page, String name, String depId, Integer proId) {
        return proms.findProjectPerson(name, depId, page, proId);
    }

    /**
     * 获取该管理账号下的企业下的项目物业用房列表
     *
     * @param page    页码
     * @param address 物业用房详细地址
     * @param nature  物业用房行政
     * @return 结果
     */
    @PostMapping(value = "/getProjectWYYF")
    public ManagerPageResult getProjectWYYF(Page page, String address, Integer nature, Integer proId) {
        return proms.findProjectWYYF(address, nature, page, proId);
    }

    /**
     * 获取该管理账号下企业下项目下业主委员会信息
     *
     * @param page       页码
     * @param name       人员姓名
     * @param sex        性别
     * @param isDirector 是否主任
     * @param proId      项目id
     * @return 结果
     */
    @PostMapping(value = "/getProjectCommittee")
    public ManagerPageResult findProjectCommittee(Page page, String name, Integer sex, Integer isDirector, Integer proId) {
        return proms.findProjectCommittee(name, sex, isDirector, proId, page);
    }

    /**
     * 选中地图上的位置，并显示相应信息
     *
     * @param session 缓存
     * @return 信息集合
     */
    @PostMapping("/Getproinfohome")
    public List<ProjectInfo> getProjectInfoHome(HttpSession session) {
        Integer id = (Integer) session.getAttribute(Common.ID);
        if (id == null) {
            return new ArrayList<>();
        }
        return proms.getProInfoHome(id);
    }
}
